package leetcode;

import java.util.Arrays;

/**
 * 贪心算法：K 次取反后最大化的数组和
 */
public class Solution30 {
    class Solution {
        public int largestSumAfterKNegations(int[] nums, int k) {
            //处理一个元素的情况
            if(nums.length == 1){
                return nums[0];
            }

            //对数组进行排序
            Arrays.sort(nums);

            for(int i = 0 ; i < nums.length ; i++){
                if(nums[i] < 0 && k > 0){
                    nums[i] = nums[i] * -1;
                    k--;
                }
            }

            if(k % 2 == 1){
                Arrays.sort(nums);
                nums[0] = nums[0] * -1;
            }
            //循环求解
            int result = 0;
            for(int j = 0 ; j < nums.length ; j++){
                result += nums[j];
            }
            return result;
        }
    }
}
